# -*- coding:utf-8 -*-

import ctypes, time, os

def ahkDllTest():
    ahk = ctypes.cdll.LoadLibrary("ahk/AutoHotkey_a32.dll")
    ahk.ahktextdll("")  # start script in persistent mode (wait for action)
    while not ahk.ahkReady():  # wait for AutoHotkey to start
        print('waiting for ahk')
        time.sleep(0.01)  # Sleep 100

    myScript = """
    gui, font, s18, Times New Roman
    Gui, Add, Text, w650  Center c800000 vMyText1, Text1
    gui, font, s11, Arial
    Gui, Add, Text,w400 x200 r4 vMyText2, Text2
    Gui, Add, Text, x10 w180 Right Section vMyText3, Text3
    Gui, Add, Progress, ys x200 w400 vMyProgress1
    Gui, Add, Text, xs w180 Right Section vMyText4, Text4
    Gui, Add, Progress, ys x200 w400 -Smooth vMyProgress2
    Gui, Add, Text, ys vMyText5, Text5
    Gui, Show
    
    FuncP1(a){
    GuiControl,, MyProgress1, %a%
    }

    FuncP2(a){
    GuiControl,, MyProgress2, %a%
    }

    FuncT1(a){
    GuiControl,, MyText1, %a%
    }

    FuncT2(a){
    GuiControl,, MyText2, %a%
    }

    FuncT3(a){
    GuiControl,, MyText3, %a%
    }

    FuncT4(a){
    GuiControl,, MyText4, %a%
    }

    FuncT5(a){
    GuiControl,, MyText5, %a%
    }
    """

    # 要传递给ANSI编码的AHK脚本,必须转码为gbk
    # ahk.addScript(myScript.encode('gbk'))
    # 但是由于myScript并没有中文,所以无需转换也可以运行
    ahk.addScript(myScript)

    # 有些字符无法转换为gbk,使用参数2忽略报错
    text2 = u"x:/Ουκ ελάβον Πολιν  -  1\nفكّٯخضڜڪڿې۞۩ - ЮЯЖ ЙЏЎЊ ЉФД  - אבגסש תשרב  - \n人 人 生 而 自 由, 在 尊 严 和 权 利 上 一. \nodt avec un nom de fichier plutôt long pour montrer que ça va à la ligne quand il le faut"
    text2 = text2.encode('gbk', 'ignore')

    ahk.ahkFunction("funcT1", u"ahk_dll的版本必须和py一致,本程序适合py2_x86".encode('gbk'))
    ahk.ahkFunction("funcT2", text2)
    ahk.ahkFunction("funcT3", "progressing")

    for i in range(30):
        val = str(i)
        val2 = str(int(i / 2))
        ahk.ahkFunction("funcP1", val)
        ahk.ahkFunction("funcP2", val2)
        ahk.ahkFunction("funcT5", val2)
        time.sleep(0.1)

    ahk.ahkExec("Gui, Destroy")
    ahk.ahkTerminate(1)
    print 'exit'


if __name__ == '__main__':
    ahkDllTest()
